import axios from "axios";

// axios 二次封装
class Http {
  constructor() {
    this.instance = axios.create({
      baseURL: "/api",
    });

    // 添加响应拦截
    this.instance.interceptors.response.use((result)=>{
      if(result.status === 200 && result.data.code === 200){
        //请求成功
        return result.data;
      }else{
        //请求失败
        console.log(result);
      }
    })  
  }

  /**
   *
   * @param url 请求的地址
   * @param data 请求的参数
   * @param config 请求的配置项
   */
  get(url, data = {}, config = {}) {
    return this.instance.get(url, {
      params: data,
      ...config,
    });
  }

  /**
   *
   * @param url 请求的地址
   * @param data 请求的参数
   * @param config 请求的配置项
   */
  post(url, data = {}, config = {}) {
    return this.instance.post(url, {
      data: data,
      ...config,
    });
  }

  /**
   *
   * @param url 请求的地址
   * @param data 请求的参数
   * @param config 请求的配置项
   */
  put(url, data = {}, config = {}) {
    return this.instance.put(url, {
      data: data,
      ...config,
    });
  }

  /**
   *
   * @param url 请求的地址
   * @param data 请求的参数
   * @param config 请求的配置项
   */
  patch(url, data = {}, config = {}) {
    return this.instance.patch(url, {
      data: data,
      ...config,
    });
  }

  /**
   *
   * @param url 请求的地址
   * @param data 请求的参数
   * @param config 请求的配置项
   */
  delete(url, data = {}, config = {}) {
    return this.instance.delete(url, {
      params: data,
      ...config,
    });
  }
}

const request = new Http();

export default request;
